<?php
class Bootstrap {
    
    public static function run(Request $request) {
        
        //creo la ruta del controlador
        $controller = $request->getController() . 'Controller';
        $rootController = APP_DIR_CONTROLLERS . '/' . $controller . '.php';
        
        
        //obtengo el metodo
        $method = $request->getMethod();
                
        //obtengo los parametros
        $params = $request->getParams();
        
        //si el archivo del controlador esta en condiciones
        if(is_readable($rootController)) {
            
            //instancio el controlador
            require_once $rootController;
            $controller = new $controller;
            
            //si es valido el metodo lo obtengo
            if(is_callable(array($controller, $method))) {
                $method = $request->getMethod();
            } else {//sino llamo al metodo predeterminado
                $method = 'main';
            }
            
            //si existen parametros
            if(isset($params)) {
                
                //llamo a la clase y metodo pasandole los parametros
                call_user_func_array(array($controller, $method), $params);
            } else {//sino existen parametros
                
                //llamo a la clase y metodo sin parametros
                call_user_func(array($controller, $method));
            }
        } else {
            throw new Exception('Controlador Inexistente');
        }
    }
}

?>
